#include<stdio.h>
#include<unistd.h>
#include<sys/wait.h>
#include<stdlib.h>

int main()
{
  pid_t id = fork();

  if(id == 0)
  {
    // 子进程
    printf("sdgafhj\n");
    int* p = NULL;
    *p = 10;
    exit(100);
  }
  else
  {
    // 父进程
    int status = 0;
    pid_t ret = waitpid(id, &status, 0);
    if(ret > 0) 
    {
      if(WIFEXITED(status))
      {
        printf("子进程执行完毕,子进程的退出码: %d\n", WEXITSTATUS(status));
      }
      else 
      {
        printf("子进程异常退出: %d\n", WIFEXITED(status));
      }
    }
  }
  //if(id < 0)
  //{
  //  perror("fork()");
  //  exit(-1);
  //}
  //else if(id == 0)
  //{
  //  int n = 5;
  //  while(n--)
  //  {
  //    printf("我是子进程: PID: %d, PPID: %d\n", getpid(), getppid());
  //
  //    sleep(1);
  //  }
  //  int* p = NULL;
  // // *p = 10;
  //  exit(1);
  //}
  //else 
  //{
  //  //pid_t ret = wait(NULL);
  // int status = 0;
  // pid_t ret = waitpid(id, &status, 0);
  // printf("子进程的进程退出码为: %d, 信号: %d\n", (status>>8)&0xFF, status & 0x7f);
  // while(1)
  //  {
  //    printf("我是父进程: PID: %d, PPID: %d\n", getpid(), getppid());
  //    sleep(1);
  //  }
  //}
  //return 0;
}
